//
// Created by herbert on 18-10-18.
//
using namespace std;

int func01() {
    int i = 42;
//    不能通过r1修改变量的值，通过i是可以的。
    const int &r1 = i;
    const int &r2 = 42;
    return 0;
}

int func02(){
    int i =42;
    int *ptr = &i;
//    虽然指针是常量但可以通过指针修改指向的对象，只不过不能修改指针本身。
    int * const ptr1 = &i;
    *ptr1 = 43;
    i=43;
//    指向非常量i,而指针ptr2本身是一个常量不可修改，ptr2一直指向i
//    指针不可变，指向的变量可以变。
    int *const ptr2=&i;

    const double pi =3.14;
//    指向常量，最前面要加const
//    指针是常量，指向的也是常量，都不能修改。
    const double *const pip = &pi;

    const int ci =42;
//    拷贝
    int ei = ci;
    int * const p = &ei;
//  字面量引用应该用const
    const int &r4 = 42;

    return 0;
}

int main() {
    return 0;
}